<template>
  <div class="rankBox">
    <div class="title">
      <p>热门景区排行</p>
      <img src="../../../images/dataScreen-title.png" alt="" />
    </div>
    <!-- 图形图标的容器 -->
    <div class="charts" ref="charts"></div>
  </div>
</template>

<script setup lang="ts">
import * as echarts from "echarts";
import { ref, onMounted } from "vue";
// 获取DOM节点
let charts = ref();
// 组件挂载完毕
onMounted(() => {
  // 一个容器可以同时展示多种类型的图形图标
  let mychart = echarts.init(charts.value);
  // 设置配置项
  mychart.setOption({
    // 标题组件
    title: {
      // 主标题
      text: "景区排行",
      link: "http://www.baidu.com",
      // 标题的位置
      left: "50%",
      // 主标题文字样式
      textStyle: {
        color: "yellow",
        fontSize: 20,
      },
      // 子标题
      subtext: "各大景区排行",
      // 子标题的样式
      subtextStyle: {
        color: "yellowgreen",
        fontSize: 16,
      },
    },
    // x|y轴
    xAxis: {
      type: "category", // 图形图标在x轴上均匀分布展示
    },
    yAxis: {},
    // 布局组件
    grid: {
      left: 20,
      bottom: 20,
      right: 20,
    },
    // 系列:决定显示图形图标是哪一种的
    series: [
      // 柱状图
      {
        type: "bar",
        data: [4, 44, 444, 4444, 44444],
        // 柱状图的: 图形上的文本标签
        label: {
          show: true,
          // 文字的位置
          position: "top",
          // 文字的颜色
          color: "pink",
        },
        // 是否显示背景颜色
        showBackground: true,
        backgroundStyle: {
          // 底部背景的颜色
          color: {
            type: "linear",
            x: 0,
            y: 0,
            x2: 0,
            y2: 1,
            colorStops: [
              {
                offset: 0,
                color: "red", // 0% 处的颜色
              },
              {
                offset: 1,
                color: "blue", // 100% 处的颜色
              },
            ],
            global: false, // 缺省为 false
          },
        },
        // 柱条的样式
        itemStyle: {
          // 柱条的圆角
          borderRadius: [10, 10, 0, 0],
          // 柱条的颜色(可以直接写颜色,也可以写函数-让每个柱条的背景色不一样)
          color: function (data: any) {
            let arr = ["red", "orange", "pink", "green", "purple"];
            return arr[data.dataIndex];
          },
        },
      },
      // 折线图
      {
        type: "line",
        data: [71010, 42000, 11259, 34000, 6666],
        smooth: true, // 平滑曲线
      },
    ],
    tooltip: {
      backgroundColor: "rgba(50, 50, 50, 0.7)",
    },
  });
});
</script>

<style scoped lang="scss">
.rankBox {
  width: 100%;
  height: 100%;
  background: url(../../../images/dataScreen-main-lb.png) no-repeat;
  background-size: 100% 100%;
  margin-top: 10px;
  .title {
    margin-left: 20px;
    p {
      color: white;
      font-size: 20px;
    }
  }
  .charts {
    height: calc(100% - 40px);
  }
}
</style>
